package main

import (
	"fmt"
	"time"
)

func main() {
	// 定义一个无缓冲channel
	c := make(chan int)

	go func() {
		defer fmt.Println("goroutine 执行结束")
		fmt.Println("goroutine 正在运行...")

		// 将666写到channel中
		// 此时子线程会阻塞，等待channel中值被获取，再往后继续执行
		c <- 666

		var i = 0
		for {
			i++
			fmt.Printf("new Gorooutine : i= %d\n", i)
			time.Sleep(1 * time.Millisecond)
		}
	}()

	// 从channel中接受数据，把那个赋值给num
	// 此时主线程会阻塞，等待channel中被赋值，再往后继续执行
	num := <-c
	fmt.Println("channel获取协程中的数据", num)
}
